#ifndef WORKTHREAD_H
#define WORKTHREAD_H

#include <QObject>
#include <QDateTime>

class WorkThread : public QObject
{
    Q_OBJECT
public:
    explicit WorkThread(QObject *parent = nullptr);

public slots:
    void SearchFile(QString mapFile,QString w2l,QString whiteFile,bool read_slk,bool del_lni);

signals:
    void sign_done();
    void sign_responseExeLog(QString ); //返回执行日志
    void sign_responseFileCount(int all,int script,int mdx,int pic,int usedMdx,int usedPic,int delMdx,int delPic);
    void sign_workOver(int);

private slots:


private:
    int m_allFileCount = 0;
    int m_scriptFileCount = 0;
    int m_mdxFileCount = 0;
    int m_picFileCount = 0;
    int m_usedMdxFileCount = 0;
    int m_usedPicFileCount = 0;
    int m_delMdxFileCount = 0;
    int m_delPicFileCount = 0;

    QString m_mapDir;
    QString m_resourceDir;
    QString m_exePath;
    QString m_mapName;
    QStringList m_scriptFile;
    QStringList m_usedMdxFile;
    QStringList m_usedPicFile;
    QStringList m_allMdxFile;
    QStringList m_allPicFile;
    QStringList m_whiteListMdx;
    QStringList m_whiteListPic;
    QStringList m_whiteListDir;
    QStringList m_deleted_files;
    QStringList m_errorLog;
/*
    id有效确认步骤
    1.预设可破坏物、装饰物  war3Map.doo
    2.lua、jass中使用的id
    3.单位预设技能id
    4.单位技能id关联的魔法效果;魔法书关联的技能
*/
    QStringList all_usedID; //所有出现在lua、j、war3Map.doo中的id
    QStringList all_ID; //物编中所有id

    void resetMeberData();
    void getScriptFile(QString dirPath); //获取脚本文件
    void SearchScript(); //搜索地图目录中的脚本文件中的mdx和blp.tga
    void sendSignResponseCount();
    void replaceChar(QString* str);
    bool isInQStringList(QString str,QStringList qs);
    void SearchMdx();//搜索模型中的贴图
    void SearchWar3MapSkinTxt();
    void SearchDoo();//搜索预设的装饰物可破坏物 wa3map.doo文件 太麻烦不想写 暂未编写
    void SearchID();//搜索脚本中出现的单位id、技能id、物品id 太麻烦不想写 暂未使用
    void delImpini();//删除table中的imp.ini 这个文件会包含所有导入文件,删除并不影响地图重新打包

    void delMdxPic();
    void delFile(const QString &strPath);
    void writeLog();
    bool packW3x(QString mapFile,QString w2l,bool del_lni);
    bool unPackW3x(QString mapFile,QString w2l);
};

#endif // WORKTHREAD_H
